<script type="text/javascript">
'use strict'
	// 过滤掉偶数
	var arr = [1, 2, 4, 5, 6, 9, 10, 15];
	var result = arr.filter(function(x) {
		return x % 2 !== 0; // 相当于 if (x % 2 !== 0) {return true;} else {return false;}
	});
	console.log(result);

	// 过滤掉空字符串
	var arr = ['A', '', 'B', null, undefined, 'C', '   '];
	console.log(arr.filter(function(s) {
		return s && s.trim(); // IE9以下没有trim()
	}));

	// 看看filter 回调函数的参数
	var arr = ['A', 'B', 'C'];
	var r = arr.filter(function(element, index, self) {
		console.log(element);
		console.log(index);
		console.log(self);
		return false;
	})
	console.log(r);

	// 去重
	var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
	console.log(arr.filter(function(x, y, z) {
		return z.indexOf(x) === y;
	}));

// 过滤素数; 只能被1和本身整除的数叫素数, 1不是素数
function getPrimes(arr) {
	return arr.filter(function(n) {
		if (n <= 3) { 
			return n > 1;  // 2, 3
		}
		if (n % 2 == 0 || n % 3 == 0) { 
			return false;  // 偶数已经全部排除, 被3整除的排除了 
		}

		for (let  i = 5; i * i <= n; i += 6) { // 25以下的奇数(5,7,11,13,17,19,23,) 
		    if (n % i == 0 || n % (i + 2) == 0) { // 脑袋不够用了...
		    	return false; 
		    }
		}
		return true;
	})
}

var x, r, arr = [];
for (x = 1; x < 100; x++) {
    arr.push(x);
}
r = getPrimes(arr);
if (r.toString() === [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97].toString()) {
    console.log('测试通过!');
} else {
    console.log('测试失败: ' + r.toString());
}


</script>